/*
 * 描          述:  <描述>
 * 修  改   人:  Administrator
 * 修改时间:  2020年3月19日
 * <修改描述:>
 */
package com.tx.component.sendsms.model;

import java.io.Serializable;
import java.util.Date;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.Id;
import javax.persistence.Table;
import javax.persistence.Transient;

import com.tx.component.sendsms.context.SendSMSEngineContext;

/**
 * 短信模板<br/>
 * <功能详细描述>
 * 
 * @author  Administrator
 * @version  [版本号, 2020年3月19日]
 * @see  [相关类/方法]
 * @since  [产品/模块版本]
 */
@Entity
@Table(name = "CMU_SMS_TEMPLATE")
public class SmsTemplate implements Serializable {
    
    /** 注释内容 */
    private static final long serialVersionUID = -7443923696767471169L;
    
    /** 模板id */
    @Id
    private String id;
    
    /** 模板编码 */
    @Column(nullable = false, updatable = false)
    private String code;
    
    /** 发送渠道 */
    @Column(nullable = false, updatable = false)
    private SendSMSWTChannelEnum channel;
    
    /** 消息类型名称 */
    @Column(nullable = false)
    private String name;
    
    /** 短信模板对应的签名 */
    @Column(nullable = true)
    private String signName;
    
    /** 渠道模板编码 */
    @Column(nullable = false)
    private String templateCode;
    
    /** 模板参数 */
    private String templateParameters;
    
    /** 模板内容：非必填字段，如果填入了会对模板参数以及模板内容做简单的校验：页面级 */
    private String templateContent;
    
    /** 是否有效 */
    @Column(nullable = false, updatable = true)
    private boolean valid = true;
    
    /** 是否可编辑： 通过配置文件配置的短信模板不可编辑 */
    private boolean modifiable = true;
    
    /** 备注 */
    private String remark;
    
    /** 最后更新时间 */
    @Column(nullable = false, updatable = true)
    private Date lastUpdateDate;
    
    /** 创建时间 */
    @Column(nullable = false, updatable = false)
    private Date createDate;
    
    /**
     * @return 返回 id
     */
    public String getId() {
        return id;
    }
    
    /**
     * @param 对id进行赋值
     */
    public void setId(String id) {
        this.id = id;
    }
    
    /**
     * @return 返回 code
     */
    public String getCode() {
        return code;
    }
    
    /**
     * @param 对code进行赋值
     */
    public void setCode(String code) {
        this.code = code;
    }
    
    /**
     * @return 返回 name
     */
    public String getName() {
        return name;
    }
    
    /**
     * @param 对name进行赋值
     */
    public void setName(String name) {
        this.name = name;
    }
    
    /**
     * @return 返回 channel
     */
    public SendSMSWTChannelEnum getChannel() {
        return channel;
    }
    
    /**
     * @param 对channel进行赋值
     */
    public void setChannel(SendSMSWTChannelEnum channel) {
        this.channel = channel;
    }
    
    /**
     * @return 返回 signName
     */
    public String getSignName() {
        return signName;
    }
    
    /**
     * @param 对signName进行赋值
     */
    public void setSignName(String signName) {
        this.signName = signName;
    }
    
    /**
     * @return 返回 templateCode
     */
    public String getTemplateCode() {
        return templateCode;
    }
    
    /**
     * @param 对templateCode进行赋值
     */
    public void setTemplateCode(String templateCode) {
        this.templateCode = templateCode;
    }
    
    /**
     * @return 返回 templateParameters
     */
    public String getTemplateParameters() {
        return templateParameters;
    }
    
    /**
     * @param 对templateParameters进行赋值
     */
    public void setTemplateParameters(String templateParameters) {
        this.templateParameters = templateParameters;
    }
    
    /**
     * @return 返回 templateContent
     */
    public String getTemplateContent() {
        return templateContent;
    }
    
    /**
     * @param 对templateContent进行赋值
     */
    public void setTemplateContent(String templateContent) {
        this.templateContent = templateContent;
    }
    
    /**
     * @return 返回 valid
     */
    public boolean isValid() {
        return valid;
    }
    
    /**
     * @param 对valid进行赋值
     */
    public void setValid(boolean valid) {
        this.valid = valid;
    }
    
    /**
     * @return 返回 modifiable
     */
    public boolean isModifiable() {
        return modifiable;
    }
    
    /**
     * @param 对modifiable进行赋值
     */
    public void setModifiable(boolean modifiable) {
        this.modifiable = modifiable;
    }
    
    /**
     * @return 返回 remark
     */
    public String getRemark() {
        return remark;
    }
    
    /**
     * @param 对remark进行赋值
     */
    public void setRemark(String remark) {
        this.remark = remark;
    }
    
    /**
     * @return 返回 lastUpdateDate
     */
    public Date getLastUpdateDate() {
        return lastUpdateDate;
    }
    
    /**
     * @param 对lastUpdateDate进行赋值
     */
    public void setLastUpdateDate(Date lastUpdateDate) {
        this.lastUpdateDate = lastUpdateDate;
    }
    
    /**
     * @return 返回 createDate
     */
    public Date getCreateDate() {
        return createDate;
    }
    
    /**
     * @param 对createDate进行赋值
     */
    public void setCreateDate(Date createDate) {
        this.createDate = createDate;
    }
    
    /**
     * 转移短信模板编码<br/>
     * <功能详细描述>
     * @return [参数说明]
     * 
     * @return SmsTemplateCode [返回类型说明]
     * @exception throws [异常类型] [异常说明]
     * @see [类、类#方法、类#成员]
     */
    @Transient
    public SmsTemplateCode getSmsTemplateCode() {
        return SendSMSEngineContext.getEngine()
                .getTemplateCodeMap()
                .get(this.code);
    }
}
